#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

//void rotate(int* nums, int numsSize, int k) {
//    k = k % numsSize;
//    int arr1[numsSize];
//    int n = numsSize - k;
//    int i = 0;
//    for (i = 0; i < k; i++)
//    {
//        arr1[i] = nums[n];
//        n++;
//    }
//    n = 0;
//    for (i; i < numsSize; i++)
//    {
//        arr1[i] = nums[n];
//        n++;
//    }
//    for (i = 0; i < numsSize; i++)
//    {
//        nums[i] = arr1[i];
//    }
//    // i=0;
//    // int arr2[numsSize];
//    // int j=0;
//    // for(j=0;j<k;j++)
//    // {
//    //     arr2[j]=arr1[i++];
//    // }
//    // int m=0;
//    // int h=0;
//    // for(h=j-1;j<numsSize;j++)
//    // {
//    //     arr2[h]=nums[m];
//    //     m++;
//    // }
//    //  m=0;
//    //  h=0;
//    // for(h=0;j<numsSize;j++)
//    // {
//    //     nums[h]=arr2[m];
//    //     m++;
//    // }
//    return;
//}

//void reverse(int* nums, int l, int r)
//{
//    while (l < r)
//    {
//        int n = nums[r];
//        nums[r] = nums[l];
//        nums[l] = n;
//        l++;
//        r--;
//    }
//
//    return;
//}
//
//void rotate(int* nums, int numsSize, int k) {
//    if (numsSize == 1)
//    {
//        return;
//    }
//    k = k % numsSize;
//    reverse(nums, numsSize - k, numsSize - 1);
//    reverse(nums, 0, numsSize - k - 1);
//    reverse(nums, 0, numsSize - 1);
//    return;
//}
//
//int main()
//{
//	int nums[7] = {1,2,3,4,5,6,7};
//	rotate(nums, 7, 3);
//	return;
//}

//int removeElement(int* nums, int numsSize, int val) {
//    int n = 0;
//    int m = 0;
//    int i = 0;
//    while (i < numsSize)
//    {
//        if (nums[m] != val)
//        {
//            nums[n] = nums[m];
//            n++;
//            m++;
//        }
//        else
//        {
//            m++;
//        }
//
//        i++;
//    }
//    return n;
//}

//int removeElement(int* nums, int numsSize, int val) {
//    int n = 0;
//    int m = 0;
//    int i = 0;
//    while (i < numsSize)
//    {
//        if (nums[m] != val)
//        {
//            nums[n] = nums[m];
//            n++;
//            m++;
//        }
//        else
//        {
//            m++;
//        }
//
//        i++;
//    }
//    return n;
//}

//int removeDuplicates(int* nums, int numsSize) {
//    int n = 0;
//    int m = 1;
//    while (m < numsSize)
//    {
//        if (nums[n] == nums[m])
//        {
//            m++;
//        }
//        else
//        {
//            n++;
//            nums[n] = nums[m];
//            m++;
//        }
//    }
//    return n + 1;
//}

//void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
//    int arr[6] = { 0 };
//    int i = 0;
//    int p1 = 0;
//    int p2 = 0;
//    int p3 = 0;
//    while (i < m + n)
//    {
//        if (p1 == m)
//        {
//            for (int j = p1 + p2; j < m + n; j++)
//            {
//                arr[j] = nums2[p2];
//                p2++;
//                i++;
//            }
//        }
//        if (p2 == n)
//        {
//            for (int k = p1 + p2; k < m + n; k++)
//            {
//                arr[k] = nums1[p1];
//                p1++;
//                i++;
//            }
//        }
//        if (i < m + n) {
//            if (nums1[p1] <= nums2[p2])
//            {
//                arr[p3] = nums1[p1];
//                p3++;
//                p1++;
//            }
//            else
//            {
//                arr[p3] = nums2[p2];
//                p3++;
//                p2++;
//
//            }
//            i++;
//        }
//    }
//    for (int h = 0; h < n + m; h++)
//    {
//        nums1[h] = arr[h];
//    }
//    return;
//}
//
//int main()
//{
//    int nums1[6] = { 1,2,3,0,0,0 };
//    int nums2[3] = { 2, 5, 6 };
//    merge(nums1, 6, 3, nums2, 3, 3);
//    return 0;
//}